import path from 'path';
import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig(({mode}) => {
    const env = loadEnv(mode, process.cwd(), '')
    const srcPath = path.resolve(__dirname, 'src')
    return {
        base: './',
        build: {
            // 兼容目标
            target: 'es2015',
            // 输出目录
            outDir: env.PACKAGE_NAME || 'dist',
            // 静态文件目录
            assetsDir: 'static',
            // 小于此阈值的导入或引用资源将内联为 base64 编码
            assetsInlineLimit: '4096',
            // 是否输出 manifest.json
            manifest: false,
            // 是否输出 sourcemap.json
            sourcemap: false,
            /**
             * 是否进行压缩（boolean | 'terser' | 'esbuild'），默认值：terser
             * 使用 esbuild，它比 terser 快 20-40 倍，压缩率只差 1%-2%
             */
            minify: 'esbuild',
            // 单文件大小告警阈值
            chunkSizeWarningLimit: 3000,
            rollupOptions: {
                output: {
                    manualChunks: id => {
                        if (id.includes('node_modules')) {
                            return 'vendor'
                        }
                    },
                },
            },
        },
        resolve: {
            // 设置路径别名
            alias: {
                '@': srcPath,
                '~@': srcPath,
                '~/': `${srcPath}/`,
            },
            extensions: ['.ts', '.tsx', '.json', '.jsx', '.js'],
        },
        // 配置前端服务地址和端口
        server: {
            // 启动时自动在浏览器中打开应用程序
            open: true,
            // 支持局域网浏览
            host: '0.0.0.0',
            // 端口号
            port: 5174,
            // 若端口号被占用是否直接退出
            strictPort: false,
            // 是否启用 https
            https: false,
            proxy: {
                // '/zsaImg': {
                //     target: 'https://yq.zsacloud.zhonshian.com/zsaImg',
                //     changeOrigin: true,
                //     ws: true,
                //     rewrite: url => url.replace(/^\/zsaImg/, ''),
                // },
            },
        },
        plugins: [
            react()

        ],
    }

})
